package com.justgame.project.service.art.service.basic;

import com.justgame.project.service.art.entity.ArtPageInfo;
import com.justgame.project.service.art.query.ArtPageInfoQuery;
import com.justgame.project.service.art.wrapper.ArtPageInfoWrapper;
import com.justgame.project.base.servcice.IBasicService;
import java.lang.Long;
import org.springframework.util.Assert;
import org.springframework.lang.NonNull;
import java.lang.Boolean;
import java.lang.String;

/**
 *
 * 文章信息表服务自定义查询类
 *
 * @@tableName art_page_info
 * @author Zwb
 */
@SuppressWarnings("all")
public interface BasicArtPageInfoService extends IBasicService<ArtPageInfoQuery,ArtPageInfo,ArtPageInfoWrapper> {

   /**
    * 新增创建
    * @param imageUrl 封面图片
    * @param title 标题
    * @param content 文章内容
    * @param type 类型
    * @param watchCount 观看次数
    * @param shareCount 分享次数
    * @param likeCount 点赞次数
    * @param isHidden 是否隐藏
    */
   default ArtPageInfo baseAdd(String imageUrl, String title, String content, ArtPageInfo.Type type, Long watchCount, Long shareCount, Long likeCount, Boolean isHidden){
      ArtPageInfo artPageInfo = new ArtPageInfo();
      artPageInfo.setImageUrl(safeValue(imageUrl, null));
      artPageInfo.setTitle(safeValue(title, null));
      artPageInfo.setContent(safeValue(content, null));
      artPageInfo.setType(safeValue(type, null));
      artPageInfo.setWatchCount(safeValue(watchCount, null));
      artPageInfo.setShareCount(safeValue(shareCount, null));
      artPageInfo.setLikeCount(safeValue(likeCount, null));
      artPageInfo.setIsHidden(safeValue(isHidden, null));
      save(artPageInfo);
      return artPageInfo;
   }

   /**
    * 更新
    * @param imageUrl 封面图片
    * @param title 标题
    * @param content 文章内容
    * @param type 类型
    * @param watchCount 观看次数
    * @param shareCount 分享次数
    * @param likeCount 点赞次数
    * @param isHidden 是否隐藏
    */
   default boolean baseUpdate(@NonNull ArtPageInfo artPageInfo,String imageUrl, String title, String content, ArtPageInfo.Type type, Long watchCount, Long shareCount, Long likeCount, Boolean isHidden){
      Assert.notNull(title,"必须提供标题");
      Assert.notNull(watchCount,"必须提供观看次数");
      Assert.notNull(likeCount,"必须提供点赞次数");
      Assert.notNull(shareCount,"必须提供分享次数");
      Assert.notNull(isHidden,"必须提供是否隐藏");
      Assert.notNull(imageUrl,"必须提供封面图片");
      Assert.notNull(type,"必须提供类型");
      Assert.notNull(content,"必须提供文章内容");
      Assert.notNull(artPageInfo.getId(),"必须提供主键ID");
      artPageInfo.setImageUrl(safeValue(imageUrl, null));
      artPageInfo.setTitle(safeValue(title, null));
      artPageInfo.setContent(safeValue(content, null));
      artPageInfo.setType(safeValue(type, null));
      artPageInfo.setWatchCount(safeValue(watchCount, null));
      artPageInfo.setShareCount(safeValue(shareCount, null));
      artPageInfo.setLikeCount(safeValue(likeCount, null));
      artPageInfo.setIsHidden(safeValue(isHidden, null));
      return updateById(artPageInfo);
   }

}